Amazon GuardDutyの検出結果がCloudWatchイベントとして送信されるケースまとめ

Amazon GuardDutyの検出結果がCloudWatchイベントとして送信されるケースまとめ

Clock Icon2024.09.19

先日 Amazon GuardDuty にあるフィードバック機能を利用すると、CloudWatch イベントが送信されることを紹介しました。
https://dev.classmethod.jp/articles/guardduty-feedback-same-event/

フィードバックしたタイミングで CloudWatch イベントが発生するなら、他にどのようなパターンで発生するのか気になったので、イベントが発生する条件を調査してみました。

先にまとめ

今回検証したのは以下 12 パターンです。図が見づらくてすみません。

gd-event-pattern1.png

CloudWatch イベントが発生したパターンは※にしています。(最初の検出結果でイベントが発生するのは当たり前なので含めていません。)

  1. 検出→アーカイブ済み
  2. 検出→フィードバック済み ※
  3. 検出→count up ※
  4. 検出→アーカイブ済み→アーカイブ
  5. 検出→アーカイブ済み→フィードバック
  6. 検出→アーカイブ済み→同じ検出結果発生 ※(新規の検出結果として発生)
  7. 検出→フィードバック済み→アーカイブ
  8. 検出→フィードバック済み→フィードバック ※
  9. 検出→フィードバック済み→同じ検出結果発生 ※
  10. 検出→count up→アーカイブ
  11. 検出→count up→フィードバック ※
  12. 検出→count up→同じ検出結果発生 ※

アーカイブを行ったら「アーカイブ済み」、フィードバックをしたら「フィードバック済み」、同じ検出結果が発生した場合は「count up」としています。

「count up」としたのは検出結果のイベント内に「count」というキーが存在し、同じ検出結果が発生した際はここの値が増加していくためです。また、アーカイブは「手動アーカイブ」を指しています。(「自動アーカイブ」の場合は CloudWatch イベントが発生しないため。)

自動アーカイブされた検出結果の場合、これらの検出結果の最初の出現とそれ以降のすべての出現 (アーカイブの完了後に生成された) は CloudWatch イベントに送信されません。

参考:Amazon CloudWatch Events を使用した GuardDuty 結果へのカスタムレスポンスの作成 - Amazon GuardDuty

基本的にはフィードバック、同じ検出結果発生したタイミングで発生します。
ただしアーカイブ後の動きは若干変わり、アーカイブ後のフィードバックでは CloudWatch イベントは発生しませんでした。
アーカイブ後に最初と同じ検出結果が発生した場合は、新規の検出結果となり count も 1 にリセットされます。

図には含めていませんが、アーカイブを元に戻す場合 CloudWatch イベントは発生しません。

検証

この先はパターンごとに結果を載せていくだけなので、興味のある人だけ読んでもらえれば大丈夫です。
それぞれのパターンを検証していきます。あらかじめ EventBridge ルールで GuardDuty のイベントを取得するように設定し SNS でメールが届くか確認しています。

1. 検出→アーカイブ済み

検出結果を選択してアーカイブするパターンです。アーカイブするだけでは CloudWatch イベントが発生しませんでした。
gd-event-pattern2.png

2. 検出→フィードバック済み

検出結果を選択してフィードバックするパターンです。フィードバックを送信すると、CloudWatch イベントが発生しました。
gd-event-pattern3.png

detail.serviceの中に"userFeedback": "USEFUL"を追加したイベントが送信されました。この時カウントは 1 で、更新時刻等は更新されていませんでした。

3. 検出→count up

検出結果と同じ検出結果が再度発生した場合のパターンです。再度同じ検出結果を発生させると、CloudWatch イベントが発生しました。
gd-event-pattern4.png

カウントが 2 になっており、更新時刻が数秒前と更新されています。

4. 検出→アーカイブ済み→アーカイブ

アーカイブ済みの一覧から再度アーカイブが選択できたので、念の為試してみましたが CloudWatch イベントは発生しませんでした。

gd-event-pattern5.png

5. 検出→アーカイブ済み→フィードバック

アーカイブ済みの検出結果からフィードバックを送信するパターンです。フィードバックを送信しましたが CloudWatch イベントは発生しませんでした。

gd-event-pattern6.png

6. 検出→アーカイブ済み→同じ検出結果発生

一度アーカイブした検出結果と同じ検出結果を再度発生させるパターンです。一度全てアーカイブしてから同じ検出結果を発生させました。

gd-event-pattern7.png

コンソール上で最近の項目に表示され、その後 CloudWatch イベントが発生しました。

gd-event-pattern8.png

7. 検出→フィードバック済み→アーカイブ

フィードバック後にアーカイブするパターンです。アーカイブしましたが CloudWatch イベントは発生しませんでした。
gd-event-pattern10.png

8. 検出→フィードバック済み→フィードバック

一度フィードバックした検出結果に対し、再度フィードバックを再送信するパターンです。再送信すると CloudWatch イベントが発生しました。
gd-event-pattern9.png

9. 検出→フィードバック済み→同じ検出結果発生

フィードバック後に再度同じ検出結果を発生させるパターンです。カウントが 2 になり、更新時刻も更新されて CloudWatch イベントが発生しました。
gd-event-pattern11.png

10. 検出→count up→アーカイブ

1.のパターンと同様、アーカイブしても CloudWatch イベントが発生しませんでした。

11. 検出→count up→フィードバック

2.のパターンと同様、フィードバックしたところ CloudWatch イベントが発生しました。

12. 検出→count up→同じ検出結果発生

同じ検出結果が三度発生するパターンです。カウントが 3 になり、更新時刻も更新されて CloudWatch イベントが発生しました。
gd-event-pattern12.png

ここまでの検証結果から、以下のパターンでは共通して CloudWatch イベントが発生しました。

  • 「最近」の項目で GuardDuty の検出が行われる
  • 「最近」の項目からフィードバックを実施

逆にアーカイブの動作とアーカイブした検出結果については CloudWatch イベントが発生しませんでした。アーカイブした検出結果と同じ検出結果が再度発生した場合は、新規の扱い(6.のパターン)となるため、CloudWatch イベントが発生することには注意が必要です。

まとめ

GuardDuty の CloudWatch イベントが発生するタイミングについてまとめてみました。

改めて CloudWatch イベントが発生したパターンを整理しました。※がイベント発生したものです。

  1. 検出→アーカイブ済み
  2. 検出→フィードバック済み ※
  3. 検出→count up ※
  4. 検出→アーカイブ済み→アーカイブ
  5. 検出→アーカイブ済み→フィードバック
  6. 検出→アーカイブ済み→同じ検出結果発生 ※(新規の検出結果として発生)
  7. 検出→フィードバック済み→アーカイブ
  8. 検出→フィードバック済み→フィードバック ※
  9. 検出→フィードバック済み→同じ検出結果発生 ※
  10. 検出→count up→アーカイブ
  11. 検出→count up→フィードバック ※
  12. 検出→count up→同じ検出結果発生 ※

「最近」の項目に表示されている状態ではフィードバックでイベントが発生しますが、アーカイブ後の検出結果をフィードバックするとイベントが発生しない点に注意したいですね。

通知させたくないイベントについては、抑制ルールを設定し自動アーカイブされるようにしておきましょう。

https://dev.classmethod.jp/articles/aws-guardduty-suppression-rules-2022/

どのタイミングで発生したイベントなのか分からなくなった場合のお役に立てれば幸いです。

この記事をシェアする

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.